package com.example.x3day04.activity;

import android.Manifest;
import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

import com.example.x3day04.R;
import com.github.dfqin.grantor.PermissionListener;
import com.github.dfqin.grantor.PermissionsUtil;
import com.umeng.socialize.ShareAction;
import com.umeng.socialize.UMAuthListener;
import com.umeng.socialize.UMShareAPI;
import com.umeng.socialize.UMShareListener;
import com.umeng.socialize.bean.SHARE_MEDIA;
import com.umeng.socialize.media.UMImage;

import java.util.Map;

import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;

public class LoginActivity extends AppCompatActivity {

    private static final String TAG = "LoginActivity";
    @BindView(R.id.btn_daimianban)
    Button mBtnDaimianban;
    @BindView(R.id.btn_qq)
    Button mBtnQq;
    @BindView(R.id.btn_weixin)
    Button mBtnWeixin;
    @BindView(R.id.btn_weibo)
    Button mBtnWeibo;
    @BindView(R.id.btn_weibo1)
    Button mBtnWeibo1;
    @BindView(R.id.btn_weixin1)
    Button mBtnWeixin1;
    @BindView(R.id.btn_qq1)
    Button mBtnQq1;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_login);
        initPermiss();
        ButterKnife.bind(this);
    }

    //请求权限
    private void initPermiss() {
        PermissionsUtil.requestPermission(this, new PermissionListener() {
            @Override
            public void permissionGranted(@NonNull String[] permission) {
                Toast.makeText(LoginActivity.this, "请求权限成功", Toast.LENGTH_SHORT).show();
            }

            @Override
            public void permissionDenied(@NonNull String[] permission) {
                Toast.makeText(LoginActivity.this, "请求权限成功", Toast.LENGTH_SHORT).show();
            }
        }, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.READ_EXTERNAL_STORAGE});
    }

    //QQ与新浪不需要添加Activity，但需要在使用QQ分享或者授权的Activity中，添加：
    //注意onActivityResult不可在fragment中实现，如果在fragment中调用登录或分享，
    // 需要在fragment依赖的Activity中实现
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        UMShareAPI.get(this).onActivityResult(requestCode, resultCode, data);
    }

    @OnClick({R.id.btn_daimianban, R.id.btn_qq, R.id.btn_weixin, R.id.btn_weibo, R.id.btn_weibo1, R.id.btn_weixin1,R.id.btn_qq1})
    public void onClick(View v) {
        switch (v.getId()) {
            default:
                break;
            case R.id.btn_daimianban:
                shareBoard();
                break;
            case R.id.btn_qq:
                share(SHARE_MEDIA.QQ);
                break;
            case R.id.btn_weixin:
                share(SHARE_MEDIA.WEIXIN);
                break;
            case R.id.btn_weibo:
                share(SHARE_MEDIA.SINA);
                break;
            case R.id.btn_weibo1:
                login(SHARE_MEDIA.SINA);
                break;
            case R.id.btn_weixin1:
                login(SHARE_MEDIA.WEIXIN);
                break;
            case R.id.btn_qq1:
                login(SHARE_MEDIA.QQ);
                break;
        }
    }

    private void login(SHARE_MEDIA type) {
        UMShareAPI.get(this).getPlatformInfo(this, type, authListener);
    }
    UMAuthListener authListener = new UMAuthListener() {
        /**
         * @desc 授权开始的回调
         * @param platform 平台名称
         */
        @Override
        public void onStart(SHARE_MEDIA platform) {

        }

        /**
         * @desc 授权成功的回调
         * @param platform 平台名称
         * @param action 行为序号，开发者用不上
         * @param data 用户资料返回
         */
        @Override
        public void onComplete(SHARE_MEDIA platform, int action, Map<String, String> data) {

            Toast.makeText(LoginActivity.this, "成功了", Toast.LENGTH_LONG).show();
            prinMap(data);
        }

        /**
         * @desc 授权失败的回调
         * @param platform 平台名称
         * @param action 行为序号，开发者用不上
         * @param t 错误原因
         */
        @Override
        public void onError(SHARE_MEDIA platform, int action, Throwable t) {

            Toast.makeText(LoginActivity.this, "失败：" + t.getMessage(),Toast.LENGTH_LONG).show();
        }

        /**
         * @desc 授权取消的回调
         * @param platform 平台名称
         * @param action 行为序号，开发者用不上
         */
        @Override
        public void onCancel(SHARE_MEDIA platform, int action) {
            Toast.makeText(LoginActivity.this, "取消了", Toast.LENGTH_LONG).show();
        }
    };

    private void prinMap(Map<String, String> data) {
        for (Map.Entry<String,String> entry : data.entrySet()){
            String key = entry.getKey();
            String value = entry.getValue();
            Log.i(TAG, key+" : "+value);

        }
    }

    private void share(SHARE_MEDIA type) {
        UMImage image = new UMImage(LoginActivity.this, R.drawable.jjy1);//资源文件
        new ShareAction(LoginActivity.this)
                .setPlatform(type)//传入平台
                .withText("hello")//分享内容
                .withMedia(image)//分享图片
                .setCallback(shareListener)//回调监听器
                .share();
    }

    //带面板的分享
    private void shareBoard() {
        UMImage image = new UMImage(LoginActivity.this, R.drawable.jjy20);//资源文件
        new ShareAction(this)
                .withText("hello")//分享文本
                .withMedia(image)//分享图片
                .setDisplayList(SHARE_MEDIA.SINA, SHARE_MEDIA.QQ, SHARE_MEDIA.WEIXIN)
                .setCallback(shareListener).open();
    }

    //回调方法
    private UMShareListener shareListener = new UMShareListener() {
        /**
         * @descrption 分享开始的回调
         * @param platform 平台类型
         */
        @Override
        public void onStart(SHARE_MEDIA platform) {

        }

        /**
         * @descrption 分享成功的回调
         * @param platform 平台类型
         */
        @Override
        public void onResult(SHARE_MEDIA platform) {
            Toast.makeText(LoginActivity.this, "成功了", Toast.LENGTH_LONG).show();
        }

        /**
         * @descrption 分享失败的回调
         * @param platform 平台类型
         * @param t 错误原因
         */
        @Override
        public void onError(SHARE_MEDIA platform, Throwable t) {
            Toast.makeText(LoginActivity.this, "失败" + t.getMessage(), Toast.LENGTH_LONG).show();
        }

        /**
         * @descrption 分享取消的回调
         * @param platform 平台类型
         */
        @Override
        public void onCancel(SHARE_MEDIA platform) {
            Toast.makeText(LoginActivity.this, "取消了", Toast.LENGTH_LONG).show();

        }
    };
}